package com.shigen.file.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shigen.file.entity.Project;
import com.shigen.file.req.ProjectRequest.Create;
import com.shigen.file.req.ProjectRequest.QueryByName;
import com.shigen.file.res.ProjectResponse.PageResponse;
import javax.servlet.http.HttpServletResponse;

/**
 * <p>
 * 问卷收集表 服务类
 * </p>
 *
 * @author shigen.fu
 * @since 2022-06-04
 */
public interface IProjectService extends IService<Project> {

  /**
   * 根据名称查询
   *
   * @param queryByName 请求参数
   * @return
   */
  IPage<PageResponse> queryByName(QueryByName queryByName);

  /**
   * 创建表单
   *
   * @param create 创建表单的请求体
   * @return
   */
  int createProject(Create create);

  /**
   * 根据表单id获得表单配置
   *
   * @param id 表单id
   * @return
   */
  Project getProjectById(String id);

  /**
   * 根据表单id更新表单状态
   *
   * @param projId 表单id
   * @param status 表单状态
   * @return
   */
  int changeProjectStatus(String projId, Boolean status);

  /**
   * 下载表单数据
   * @param projId 表单id
   * @param withAdditionInfo 是否下载额外信息
   * @param response 返回流
   */
  void downloadData(String projId, Boolean withAdditionInfo, HttpServletResponse response);
}
